module, package, class(類的基礎)
在前面幾篇文章我們,學到許多基礎知識。我們今天要來練習使用 Module(模組) 與 Package(套件)。
當我們在開發大型應用程式時,如果沒有適當的組織程式碼,除了會降低開發的效率外與可讀性,也不易於維護,所以模組(Module)化就顯得格外重要。
專案模組(Module)越來越多,會越難以管理及除錯,這時候就能將模組(Module)打包成套件(Package),利用其階層式的結構來彈性規劃模組(Module)。
所以我接下來要帶大家一起了解與使用 Module 與 Package
我們先建立一個專案目錄,這裡我取為 my_project。在專案內我用 main.py
與 module.py
作區隔方便命名也方便認讀。我們先在 module.py
撰寫簡單的函式。這裡我寫加減乘除
# module.py
def add(n1, n2):
return n1+n2
def time(n1, n2):
return n1*n2
def minus(n1, n2):
return n1-n2
def devide(n1, n2):
return n1/n2
那我們該如何使用這些 module 呢?
我們可以利用以下語法:
import 模組名稱
我們在 main.py
引入 module.py
# main.py
import module
print(counter.add(2, 2))
補充: 我們可以在 import module 後面加 as 命名導入模組名稱
如此一來我們在 main.py
要使用 module.py
的函式時,就要使用模組名稱.模組函式名稱(變數1...)
我們可以利用匯入模組讓我們每次使用模組函示打這麼多字,也讓程式更加簡潔。
我們使用以下語法:
from 模組名稱 import 模組內函式名稱
我們實際操作一下
# main.py
from module import add, minus
add(2, 2)
minus(2, 2)
補充 : 在 import 使用 * 可以導入 module.py 所有的函式
我們在專案目錄底下創建一個目錄,我這邊命名為 package
方便認讀。在package內增加 __init__.py
,並且新增其他模組Module1
...
__init__.py
可以撰寫套件(Package)初始化的程式碼
我們將剛剛寫的模組程式碼貼到Moduel1.py
,在main.py引用模組
# main.py
from package import Module1 as Module
print(Module.add(2, 2))
print(Module.minus(2, 2))
print(Module.time(2, 2))
會看到以下結果 :
那如果我們使用 Class 的方法來寫呢?
後面物件導向會在細說。簡單來說,類底下會有許多函式(方法)與變數(屬性)
語法如下:
class 名稱:
def 函式名稱1:
函式功能...
def 函式名稱2:
函式功能...
.
.
.
但是我們這邊會稍微再進階一點,會使用到self
語法
class 名稱:
def __init__(self, 變數1, ...):
self.變數名稱 = 變數1
.
.
.
def 函式名稱1(self):
函式功能...
def 函式名稱2(self):
函式功能...
.
.
.
我將在 Module2.py
內作範例
# Module2.py
class Counter:
def __init__(self, n1=1, n2=1):
self.n1 = n1
self.n2 = n2
def add(self):
return self.n1+self.n2
def time(self):
return self.n1*self.n2
def minus(self):
return self.n1-self.n2
def devide(self):
return self.n1/self.n2
在 main.py 導入 package 的 Module2 函式庫,
from package import Module2
count_add = Module2.Counter(4, 6) # 將我們 Counter class 實體化(實例)
count_minus = Module2.Counter(5, 2)
result_add = count_add.add() # 方法
result_minus = count_minus.minus()
print(result_add)
print(result_minus)
得到的結果如下圖 :
我就大約介紹到這邊,這就是基本的class長得怎麼樣與專案開發時常會使用到的 Module(模組) 與 Package(套件)的基本介紹
解析Python模組(Module)和套件(Package)的概念
Python Module 模組的載入與使用 By 彭彭
Python Package 封包的設計與使用 By 彭彭
Python的包裝機制 — Function, Class, Module, Package
澎澎的教學網站
澎澎的yt教學頻道